function log(data) {
	console.log(data);
}

function requestChannelToken() {
	log("채널 요청 중.");
	$.getJSON('request-channel-token', {
		'url' : chatURL
	}, function(data) {
		log("채널 생성 중.");
		console.log("토큰 : " + data.token);

		var ch = new goog.appengine.Channel(data.token);
		log(ch);

		log("연결 중.");
		showMessage("시스템", "접속하는 중...");
		var socket = ch.open();

		socket.onopen = function() {
			log("소켓 열림");
			showMessage("시스템", "연결 되었습니다.");
		};
		socket.onerror = function() {
			log("소켓 에러");
		};
		socket.onclose = function() {
			log("소켓 닫김");
		};

		socket.onmessage = function onMessage(data) {
			log("수신 시작");
			log("수신: " + data.data);

			var json = $.parseJSON(data.data);
			showMessage(json.sender, json.message);
		};
	});
}

function showMessage(sender, text) {
	var itemDiv = document.createElement("div");
	var senderDiv = document.createElement("div");
	var messageDiv = document.createElement("div");

	$(senderDiv).addClass("sender").text(sender).appendTo(itemDiv);
	$(messageDiv).addClass("message").text(text).appendTo(itemDiv);

	$(itemDiv).addClass("chat-item").hide().fadeIn().appendTo($("#chatbox"));
	$("#chatbox").scrollTop($("#chatbox")[0].scrollHeight);
}

$(document.body).ready(function() {
	requestChannelToken();
	$("#message-box").keypress(function(e) {
		if (e.keyCode == 13) {
			say(e);
		}
	});

	$("#post-button").click(function(e) {
		say(e);
	});
	
	$("#chatbox").css("height", $(window).height() - $("#input-area").height());
	showMessage("시스템", chatURL +"에 대한 채널 준비 중...");

});

function say(e) {
	if (e.preventDefault) {
		e.preventDefault();
	} else {
		e.returnValue = false;
	}

	if ($("#message-box").attr("value").length == 0) {
		return false;
	}

	var data = "url=" + encodeURI(chatURL) + "&message="
			+ encodeURI($("#message-box").attr("value"));
	var sender = $("#sender-name-box").attr("value");

	if (sender && sender.length > 0) {
		data += "&sender=" + encodeURI(sender);
	}

	log(data);
	$.post("say", data);
	$("#message-box").attr("value", "");

	return false;
}
